package com.zbkj.common.constants;

import java.util.Arrays;
import java.util.List;

/**
 * 客服模块常量类
 * +----------------------------------------------------------------------
 * | CRMEB [ CRMEB赋能开发者，助力企业发展 ]
 * +----------------------------------------------------------------------
 * | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
 * +----------------------------------------------------------------------
 * | Licensed CRMEB并不是自由软件，未经许可不能去掉CRMEB相关版权
 * +----------------------------------------------------------------------
 * | Author: CRMEB Team <admin@crmeb.com>
 * +----------------------------------------------------------------------
 */
public class AssistantConstants {

    /** 无效的客服账号ID */
    public static final Integer INVALID_SERVICE_ACCOUNT_ID = -1;

    /**
     * 客服设置常量
     */
    public static class Setting {
        /** 分配模式 - 按余量分配：按当前接待中的剩余量分配 */
        public static final Integer CONVERSATION_ASSIGN_MODE_REMAINING = 1;
        /** 分配模式 - 平均分配：轮询分配 */
        public static final Integer CONVERSATION_ASSIGN_MODE_AVG = 2;

        /** 排队分配规则 - 先到后服务 */
        public static final Integer QUEUE_ASSIGN_RULE_EARLY_TO_LATE = 1;
        /** 排队分配规则 - 先到先服务 */
        public static final Integer QUEUE_ASSIGN_RULE_LATE_TO_EARLY = 2;


    }

    /**
     * 客服消息常量
     */
    public static class Conversation {

        /** 会话状态 - 排队中 */
        public static final Integer STATUS_QUEUE = 0;
        /** 会话状态 - 服务中 */
        public static final Integer STATUS_SERVICE = 1;
        /** 会话状态 - 结束 */
        public static final Integer STATUS_COMPLETE = 2;
        /** 会话状态 - 进行中的会话状态列表 */
        public static final List<Integer> STATUS_SERVICE_LIST = Arrays.asList(AssistantConstants.Conversation.STATUS_QUEUE, AssistantConstants.Conversation.STATUS_SERVICE);

        /** 会话来源 - 默认 */
        public static final Integer SOURCE_DEFAULT = 0;
        /** 会话来源 - 商品 */
        public static final Integer SOURCE_PRODUCT = 1;
        /** 会话来源 - 订单 */
        public static final Integer SOURCE_ORDER = 2;
        /** 会话来源 - 售后单 */
        public static final Integer SOURCE_REFUND_ORDER = 3;
        /** 会话结束类型 - 未结束 */
        public static final Integer END_TYPE_NOT_END = 0;
        /** 会话结束类型 - 客服结束 */
        public static final Integer END_TYPE_COMPLETE = 1;
        /** 会话结束类型 - 超时结束 */
        public static final Integer END_TYPE_TIMEOUT = 2;
        /** 会话结束类型 - 禁用客服 */
        public static final Integer END_TYPE_DISABLE_ACCOUNT = 3;

    }

    /**
     * 客服消息常量
     */
    public static class Message {

        /** 消息发送类型 - 系统发送 */
        public static final Integer SENDER_TYPE_SYSTEM = 0;
        /** 消息发送类型 - 用户发送 */
        public static final Integer SENDER_TYPE_USER = 1;
        /** 消息发送类型 - 客服发送 */
        public static final Integer SENDER_TYPE_SERVICE = 2;


        /** 消息内容类型 - 文本 */
        public static final Integer CONTENT_TYPE_TEXT = 1;
        /** 消息内容类型 - 图片 */
        public static final Integer CONTENT_TYPE_IMAGE = 2;
        /** 消息内容类型 - 视频 */
        public static final Integer CONTENT_TYPE_VIDEO = 3;
        /** 消息内容类型 - 商品链接 */
        public static final Integer CONTENT_TYPE_PRODUCT = 4;
        /** 消息内容类型 - 订单 */
        public static final Integer CONTENT_TYPE_ORDER = 5;
        /** 消息内容类型 - 售后单 */
        public static final Integer CONTENT_TYPE_REFUND_ORDER = 6;
        /** 消息内容类型 - 系统消息 */
        public static final Integer CONTENT_TYPE_SYSTEM = 21;
        /** 消息内容类型 - 评价消息 */
        public static final Integer CONTENT_TYPE_COMMENT = 22;

        /** 客服消息内容类型 - 刷新会话（仅用于Websocket推送，给客服刷新会话使用，不会保存到数据库中） */
        public static final Integer CONTENT_TYPE_SERVICE_REFRESH_CONVERSATION = 31;
    }



}
